home *** CD-ROM | disk | FTP | other *** search
/ Aminet 22 / Aminet 22 (1997)(GTI - Schatztruhe)[!][Dec 1997].iso / Aminet / dev / misc / gms_e.lha / GMSDev / Source / E / Screens / DoubleBuffer.e < prev    next >
Text File  |  1997-09-15  |  2KB  |  73 lines

  1. /* Name:      Double Buffering
  2. ** Author:    Paul Manias
  3. ** Copyright: DreamWorld Productions (c) 1996-1997.  Freely distributable.
  4. **
  5. ** This just shows how to double buffer the screen.  You can also try out
  6. ** triple buffering just by changing the DBLBUFFER flag to TPLBUFFER in the
  7. ** GameScreen.
  8. */
  9.  
  10. MODULE 'dpkernel','gms/dpkernel','graphics/pictures','files/files'
  11. MODULE 'screens','system/register','system/modules','gms/joydata'
  12. MODULE 'graphics/screens'
  13.  
  14. PROC main()
  15.    DEF screen:PTR TO screen, loadpic:PTR TO picture, joydata:PTR TO joydata
  16.    DEF picfile:filename, scrmodule:PTR TO module
  17.  
  18.    picfile := [ ID_FILENAME, 'GMS:demos/data/PIC.Green' ]:filename
  19.  
  20.    IF dpkbase := OpenLibrary('GMS:libs/dpkernel.library',0)
  21.       SetUserPrefs(0)
  22.  
  23.   IF (scrmodule := Init([TAGS_MODULE,NIL,
  24.       MODA_NUMBER,    MOD_SCREENS,
  25.       MODA_TABLETYPE, JMP_AMIGAE,
  26.       TAGEND], NIL))
  27.  
  28.       scrbase := scrmodule.modbase
  29.  
  30.       IF (screen := Init([TAGS_SCREEN,NIL,
  31.            GSA_PALETTE,   [$000000,$103000,$F0C0B0,$F0A090,$D08080,$906050,$604040,$201010,$400000,$404040,
  32.                            $F0F000,$403020,$C0C000,$105000,$500010,$808000,$206010,$207010,$308020,$409020,
  33.                            $50A030,$50B040,$607070,$60C040,$708080,$90A0A0,$B0C0C0,$800010,$900010,$A00020,
  34.                            $700010,$600010]:LONG,
  35.            GSA_SCRWIDTH,  320,
  36.            GSA_SCRHEIGHT, 256,
  37.            GSA_PLANES,    5,
  38.            GSA_SCRATTRIB, DBLBUFFER,
  39.            TAGEND],NIL))
  40.  
  41.          IF (loadpic := Init([TAGS_PICTURE,NIL,
  42.               PCA_DATA,       screen.memptr1,
  43.               PCA_WIDTH,      320,
  44.               PCA_HEIGHT,     256,
  45.               PCA_PLANES,     5,
  46.               PCA_AMTCOLOURS, 32,
  47.               PCA_SCRTYPE,    screen.scrtype,
  48.               PCA_FILE,       picfile,
  49.               TAGEND],NIL))
  50.  
  51.             IF (joydata := Init(Get(ID_JOYDATA),NIL))
  52.  
  53.                Display(screen)
  54.  
  55.                REPEAT
  56.                  WaitVBL()
  57.                  SwapBuffers(screen)
  58.                  Query(joydata)
  59.                UNTIL (joydata.buttons AND JD_LMB)
  60.  
  61.            Free(joydata)
  62.            ENDIF
  63.          Free(loadpic)
  64.          ENDIF
  65.       Free(screen)        
  66.       ENDIF
  67.     Free(scrmodule)
  68.     ENDIF
  69.    CloseDPK()
  70.    ENDIF
  71. ENDPROC
  72.  
  73.